//
// Created by REEJI2219 on 2024-09-12.
//
#include <iostream>
#include <cmath>
using namespace std;
class FullTreeNode {
public:
    int value;
    bool empty;
    FullTreeNode() {
        value = 0;
        empty =true;
    }
};
class FullTree {
private:
    FullTreeNode *list;
    int max_size;
public:
    FullTree() {
        max_size = 33;
        list = new FullTreeNode[max_size];
        for(int i=0;i<max_size;i++) {
            FullTreeNode * full_tree_node = new FullTreeNode();
            list[i]=*full_tree_node;
        }
    }
    ~FullTree() {
        delete[] list;
    }
    void addData(int data[],int n) {
        for (int i=0;i<n;i++) {
            list[i].value=data[i];
            list[i].empty=false;
        }
    }
    int getLeftChildData(int i) {
        return list[2*i].value;
    }
    int getRightChildData(int i) {
        return list[2*i+1].value;
    }
    int getLevel(int i) {
        return log(i)/log(2)+1;
    }
};

// int main(int argc, char *argv[]) {
//     FullTree *full_tree = new FullTree();
//     int n=30;
//     int *data = new int[30];
//     for (int i=1;i<n;i++) {
//         data[i]=i;
//     }
//     full_tree->addData(data,30);
//     cout<<full_tree->getLeftChildData(2)<<endl;
//     cout<<full_tree->getRightChildData(5)<<endl;
//     cout<<full_tree->getLevel(10)<<endl;
// }
